[アップデート] NLBのターゲットにALBを登録できるようになりました!

[アップデート] NLBのターゲットにALBを登録できるようになりました!

NLBのターゲットにALBを登録して、固定IPのALBやPrivateLinkでALBを利用できるようになりました
Clock Icon2021.09.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

札幌オフィスの中川です。

NLB のターゲットとして ALB を登録できるようになり、ALB 固定 IP したり PrivateLink で公開するアプリケーションに ALB を使えるようになりました。

Application Load Balancer now enables AWS PrivateLink and static IP addresses by direct integration with Network Load Balancer

公式ブログ図引用)

なにが嬉しいのか

アップデートで嬉しいケースをいくつか紹介します。

ALBを固定IPで接続できる

これまで ALB に固定 IP で接続する方法として、以下のブログのように Lambda でターゲットグループの IP を定期的に更新させる構成や、Global Accelerator を使う構成がございました。

ただし、Lambda のパターンは 1 分間隔での更新であることから ALB の入れ替えを考慮すると安定性に欠け、Lambda 自体の継続的なメンテナンスも必要でした。また、Global Accelerator のパターンでは固定 IP 設定する用途には割高になるケースがございました。
アップデートで NLB のターゲットとして直接 ALB を設定できるようになり、NLB に設定した Elastic IP で ALB にアクセスできるようになりました。

PrivateLinkで公開するサービスでALBを使用できる

PrivateLink を作成することで、独自サービスを他の AWS アカウントの VPC に対して安全に公開することができます。PrivateLink のエンドポイントにで ALB を選択できないため、これまでは PrivateLink で公開するサービスでコンテンツベースのルーティングなど ALB で提供される機能を使えませんでした。
アップデートで NLB のターゲットとして ALB を使用できるようになり、PrivateLink で公開するアプリケーションで ALB の機能を使用できるようになりました。

マルチプロトコルなアプリケーションにALBを利用できる

マルチメディアサービスは、シグナリングに HTTP、ストリーミングに RTP、とマルチプロトコルを利用します。このようなアプリケーションで単一のエンドポイントとして NLB を使用し、HTTP は ALB に振り分ける構成をできるようになりました。

留意事項

以下の留意事項があります。

  • NLB の TLS リスナーは ALB のターゲットグループに転送できません
  • ターゲットグループで ALB は1つのみ構成できます
  • NLB と ALB 間の通信は IPv4/IPv6 デュアルスタックの ALB であっても IPv4 のみ使われます
  • NLB の背後に登録されている ALB を削除できません
  • 可用性、スケーリング、パフォーマンスを最大化するために ALB と NLB で同じ AZ を使用します

やってみた

以下のような構成で NLB に設定した Elastic IP 経由で ALB に接続してみます。事前に ALB、EC2、NLB に割り当てる ElasticIP を作成しています。

最初にターゲットグループを作成します。ターゲットタイプとして Application Load Balancer を選択します。

ターゲットとして作成しておいた ALB を選択します。

続いて NLB を作成します。IPv4 の設定で ElasticIP を選択し、リスナーのデフォルトアクションで先程作成したターゲットグループを選択します。

設定が完了しました。ALB が登録されたターゲットグループのヘルスステータスは healthy になっていることを確認できます。

動作確認します。ブラウザから ElasticIP のアドレスに接続すると、コンテンツを表示できることを確認できました。

おまけ:Global AccelaratorとNLBの料金を単純比較してみた

ALB を固定 IP で利用したいケースで、Global Accelarator を利用した場合と NLB を利用した場合でどの程度の料金差があるか確認してみます。

AWS Global Accelerator は、アクセラレーターの稼働時間とトラフィック量に対して課金されます。 トラフィック量はアクセラレーターのリージョンから送信先となるエッジロケーションごとに発生します。例えば東京リージョンから国内のローケーションへの通信であれば 0.010 USD/GB です。

NLB は、NLB の稼働時間と NLCU に応じて課金されます。NLCU の課金は、新しい接続 / アクティブな接続 / 処理バイト(双方向)のうち最も多いもの対してのみ発生します。

以下の都合のいい前提のもと、総トラフィック量ごとに料金比較してみます。(2021/9 時点)

  • 国内から東京リージョンへのみアクセスされる

  • 総トラフィックのうち 30%がインバウンド、70%がアウトバウンド(GA はアウトバウンドのみ対象)

  • NLCU は処理バイト数が最も多い

固定料金 トラフィック 10TB/月 トラフィック 100TB/月
Global Accelarator 18 USD/月 71.68 USD/月 716.8 USD/月
Network Load Balancer 16.43 USD/月 61.45 USD/月 614.38 USD/月

ALB に固定 IP で接続できるようにするためだけであれば、Global Accelarator と NLB で費用面で大きな差が出ないこともあります。アプリケーション特性や接続パターンに応じて使い分けください。

さいごに

NLB のターゲットグループとして ALB を登録できるようになり、ALB の IP アドレスを固定化したり、PrivateLink で ALB を利用できるようになりました。
ALB に固定 IP で接続する方法としては、今後は NLB と Global Accelarator と使い分けていただくことになりそうです。また、 PrivateLink で ALB を使えるようになったことで、SaaS アプリケーションを提供するユーザーにとってはアーキテクチャの幅が広がって嬉しいのではないかと思いました。

参考

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.